import {config} from '../utils/config.js';
import {Token} from '../utils/token.js';
class Base{
  //构造函数
  constructor(){
    this.baseUrl = config.restUrl;
  }

  //重写request()请求
  //http 请求类, 当noRefech为true时，不做未授权重试机制
  request(options, noRefetch){
    var that = this;
    var url = this.baseUrl + options.url;
    console.log('url:',url);
    wx.request({
      url: url, //仅为示例，并非真实的接口地址
      data: options.data,
      method : options.method ? options.method : 'GET',
      header: {
        'content-type': 'application/json', // 默认值
        'token': wx.getStorageSync('token')
      },
      success: function (res) {
        // if(options.callBack){
        //   options.callBack(res);
        // }

        var code = res.statusCode.toString();
        var startChar = code.charAt(0);
        if(startChar == '2'){
          options.success && options.success(res.data);
        }else{
          if(code =='401'){
              if (!noRefetch) {
                that._refetch(options);
              }
          }
          if(noRefetch){
            options.eCallBack && options.eCallBack(res.data);
          }
        }
      },
      fail:function(err){
        console.log(err);
      }
    })
  }

  //封装图片上传方法
  imgUpload(options){
    wx.chooseImage({
      count: options.count ? options.count : 1, // 默认9
      sizeType: options.sizeType ? options.sizeType : ['original', 'compressed'], // 可以指定是原图还是压缩图，默认二者都有
      sourceType: options.sourceType ? options.sourceType : ['album', 'camera'], // 可以指定来源是相册还是相机，默认二者都有
      success: function (res) {
        // 返回选定照片的本地文件路径列表，tempFilePath可以作为img标签的src属性显示图片
        var tempFilePaths = res.tempFilePaths
        options.success && options.success(tempFilePaths);
      },
      fail:function(err){
        console.log(err);
      }
    })
  }


  _refetch(options){
    var token = new Token();
    token.getTokenFromServer((token)=>{
      this.request(options);
    })
  }

}

export {Base};




